#ifndef __EutranConfigData_H_included_
#define __EutranConfigData_H_included_

#include <stdint.h>
#include "BbuManager.h"

#define EutranConfigDataPtr (EutranConfigData::instance())

static const uint8_t MAX_RX_POWER = 76;

class EutranConfigData
{
public:
    static EutranConfigData* instance();

    EutranConfigData* setRssiThreshold(uint8_t slotId, uint16_t rssi);
    uint16_t getRssiThreshold(uint8_t slotId);

    EutranConfigData* setBandWidth(uint8_t slotId, uint8_t bw);
    uint16_t getBandWidth(uint8_t slotId);

    EutranConfigData* setTxPowerDb(uint8_t slotId, int8_t db);
    int8_t getTxPowerDb(uint8_t slotId);

    EutranConfigData* setRxPower(uint8_t slotId, uint8_t pw);
    uint16_t getRxPower(uint8_t slotId);

    EutranConfigData* setGpsDelay(uint8_t slotId, int32_t gpsTmDelay);
    int32_t getGpsDelay(uint8_t slotId);

    EutranConfigData* setSyncMode(uint8_t slotId, uint8_t mode);
    uint8_t getSyncMode(uint8_t slotId);

    EutranConfigData* setIsSaveFS(uint8_t slotId, bool isSv);
    bool getIsSaveFS(uint8_t slotId);

    EutranConfigData* setWorkingBand(uint8_t slotId, uint8_t band);
    uint8_t getWorkingBand(uint8_t slotId);

    EutranConfigData* setIsMeasEnable(uint8_t slotId, bool Mea);
    bool getIsMeasEnable(uint8_t slotId);

    EutranConfigData* setWorkingMode(uint8_t slotId, uint8_t workMode);
    uint8_t getWorkingMode(uint8_t slotId);

    EutranConfigData* setMinRxLev(uint8_t slotId, int16_t minRxLev);
    int16_t getMinRxLev(uint8_t slotId);

    EutranConfigData* setMinRxLevOffset(uint8_t slotId, uint8_t minRxLevOffset);
    uint8_t getMinRxLevOffset(uint8_t slotId);

    
private:
    EutranConfigData();
    EutranConfigData(const EutranConfigData&);
    EutranConfigData& operator=(const EutranConfigData&);

    uint16_t rssiThreshold_[BbuManager::MAX_BBU_INSTANCES];
    uint8_t bandWidth_[BbuManager::MAX_BBU_INSTANCES];
    uint8_t syncMode_[BbuManager::MAX_BBU_INSTANCES];
    int32_t gpsTmDelay_[BbuManager::MAX_BBU_INSTANCES];
    
    int8_t txPowerDb_[BbuManager::MAX_BBU_INSTANCES];
    uint8_t rxPower_[BbuManager::MAX_BBU_INSTANCES];

    bool isSaveFS_[BbuManager::MAX_BBU_INSTANCES];
    uint8_t workingBand_[BbuManager::MAX_BBU_INSTANCES];

    bool isMeasEnable_[BbuManager::MAX_BBU_INSTANCES];

    uint8_t workingMode_[BbuManager::MAX_BBU_INSTANCES];

    int16_t minRxLev_[BbuManager::MAX_BBU_INSTANCES];
    uint8_t minRxLevOffset_[BbuManager::MAX_BBU_INSTANCES];

  

};

#endif
